# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：3.7 练习题的优化.py
# 开发时间：2021/3/13 18:39

# 考虑程序性能、运行时间，应该优化
# 可以用模块，通过模块对python进行拓展优化
# 引入一个time模块，来统计程序执行时间
# time()函数可以获取执行改行代码时的当前时间，返回的单位是秒

# 例如质数练习题的优化

# # 原始版本:
# from time import *
# begin = time()
# num = 2
# str_num = "10000以内所有的质数："
# print("\n练习2：求10000以内所有的质数")
# while num < 10000:
#     i = 2
#     flag = True
#     while i < num:
#         if num % i == 0:
#             flag = False
#         i += 1
#     if flag:
#         str_num += ' ' + str(num)
#     num += 1
# print(str_num)
# end = time()
# print("该程序执行了", end - begin, "秒")
# # 该程序执行了 22.190403699874878 秒

# # 第一次优化思路，用循环体时，可以用break、continue减免不必要执行的语句
# from time import *
# begin = time()
# num = 2
# str_num = "10000以内所有的质数："
# print("\n练习2：求10000以内所有的质数")
# while num < 10000:
#     i = 2
#     flag = True
#     while i < num:
#         if num % i == 0:
#             flag = False
#             break
#         i += 1
#     if flag:
#         str_num += ' ' + str(num)
#     num += 1
# print(str_num)
# end = time()
# print("该程序执行了", end - begin, "秒")
# # 该程序执行了 2.487344741821289 秒

# 第二次优化思路，因为非质数的特点,不用全部数都遍历完,只需要遍历到根号num就好,同时考虑到根号4=2的情况,应该i<=num
from time import *
begin = time()
num = 2
str_num = "10000以内所有的质数："
print("\n练习2：求10000以内所有的质数")
while num < 10000:
    i = 2
    flag = True
    while i <= num ** 0.5:
        if num % i == 0:
            flag = False
            break
        i += 1
    if flag:
        str_num += ' ' + str(num)
    num += 1
print(str_num)
end = time()
print("该程序执行了", end - begin, "秒")
# 该程序执行了 0.12965869903564453 秒
# 由此可得,算法以及数学知识的积累尤为重要

